package com.flying;

import java.lang.invoke.VarHandle;
import java.util.Arrays;

/**
 * @author 刘鹏飞
 * @Classname ArrayInitlized
 * @Date 2024/12/16 18:26
 * @Created by 刘鹏飞
 * @Description 数组的三种初始化方式
 */
public class ArrayInitialized {

    public static void main(String[] args) {

        /*
        数组的三种初始化方式
       1. 静态初始化
       2. 动态初始化
       3. 默认初始化
         */

        System.out.println("============================== 静态初始化===============================");
        /**
         *  1. 静态初始化:定义数组是，就指定数组里的内容
         *  如果使用 new String[]{}赋值，定义数组和赋值内容可以分开写
         *  如果使用{}直接赋值，声明数组和赋值不能分开
         */

        String[] heroes = new String[]{"张飞", "程咬金", "百里守约", "王昭君"};
        int[] ages = {13, 123, 45, 10};  // 使用数组字面量直接赋值


        Man[] men = {
                new Man(1, 5),
                new Man(2, 34),
                new Man(3, 23)
        };

        System.out.println(Arrays.toString(men));

        System.out.println("============================动态初始化=================================");

        /**
         * 2. 动态初始化
         *  定义数组时不赋值，在后通过下标的形式给数组里面的元素赋值
         */


        int[] nums = new int[5];
        //  数据的下标从0开始，最大长度到 length-1
        nums[0]=1;
        nums[1]=2;
        nums[2]=3;
        nums[3]=4;

        System.out.println(Arrays.toString(nums));

        System.out.println("============================默认初始化=================================");


        /**
         * 3. 默认初始化
         * 数组也是个对象，数组内的元素可以看成对象的属性。
         * 数组声明后，使用属性的默认值机制赋值、
         * 默认值有数组的类型决定； byte/short/int/long --> 0    boolean--> false char --> 空字符
         * 引用数据类型，默认值是 null
         */

        int[] nums1 = new int[5];
        String[] strs = new String[4];
        boolean[] booleans = new boolean[3];


        System.out.println(Arrays.toString(nums1));
        System.out.println(Arrays.toString(strs));
        System.out.println(Arrays.toString(booleans));



    }
}
